package com.tom.architect.day12;

import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

/**
 * Added by Tom on 2023/12/14.
 * 模板模式的应用：
 * 基本固定的流程：设置布局、初始化View、初始化头部Title、访问接口的数据
 */
public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        hookContentView(); // 钩子函数

        // 基本固定的流程：设置布局、初始化View、初始化头部Title、访问接口的数据
        setContentView(); // 1.设置布局
        // 写一些公用的方法：ButterKnife注解、统一管理Activity...
        if (flagTest()) {
            initTitle(); // 2. 初始化Title
        }
        initView(); // 3. 初始化View
        initData(savedInstanceState); // 4. 访问接口的数据
    }

    protected boolean flagTest() {
        return false;
    }
    // 钩子函数
    protected void hookContentView() {
    }
    protected abstract void initData(Bundle savedInstanceState);
    protected abstract void initView();
    protected abstract void initTitle();
    protected abstract void setContentView();

    public void startActivity(Class<? extends BaseActivity> clazz) {
        Intent intent = new Intent(this, clazz);
        startActivity(intent);
    }

}
